When an idle Universal Serial Bus (USB) device attached to a personal computer (PC), the USB controller will continue fetching descriptor tables even though the list may be empty. The fetch operations cause the central processing unit (CPU) to exit a power saving state or mode, even if there is no work for the CPU to do, and this is wasted energy.
There is an existing mode known as asynchronous park mode, in which the USB controller is allowed to fetch multiple tables in one frame instead of fetching one table per frame over multiple frames. USB 2.0 uses a period of 125 microseconds for every frame. As an example, various CPUs have defined “C states” that indicate how much of the CPU function is available. The higher the C number, the less function is available. With asynchronous park mode, the CPU is able to stay in C3 state (a reduced-power state or sleep state) for the duration of multiple frames when the USB controller is not fetching. However, the CPU is still brought back to C0 state or C2 state (active, power-consuming states) whenever the USB controller is performing the data fetch. So although asynchronous park mode does make fetches more efficient, the CPU must still return to C0 state or C2 state every few hundred microseconds.
The drawings represent aspects of various embodiments for the purpose of disclosing the invention as claimed, but are not intended to be limiting in any way.